package br.com.ponto.service;

import java.util.List;

import br.com.ponto.dao.FuncionarioDAO;
import br.com.ponto.dao.PontoDAO;
import br.com.ponto.model.Funcionario;
import br.com.ponto.model.Usuario;

public class FuncionarioService {
	
	private FuncionarioDAO funcDAO;
	private PontoDAO pontoDAO;
	
	public FuncionarioService() {
		this.funcDAO = new FuncionarioDAO();
		this.pontoDAO = new PontoDAO();
	}
	
	public Funcionario consultar(Integer idFuncionario) {
		Funcionario funcionario = this.funcDAO.consultar(idFuncionario);
		// carrega os pontos (Lazy)...
		funcionario.setPontos(this.pontoDAO.listar(funcionario));
		return funcionario;
	}
	
	public Funcionario salvar(Funcionario funcionario, Usuario usuario) {
		Funcionario func = this.funcDAO.salvar(funcionario, usuario);
		
		return func;
	}
	
	public List<Funcionario> listar(String nomeFuncionario) {
		if(nomeFuncionario == null || "".equals(nomeFuncionario)) {
			return this.funcDAO.listar();
		} else {
			return this.funcDAO.listarPorNome(nomeFuncionario);
		}
	}
	
	public void remover(Integer idFuncionario, Usuario usuario) {
		// carrega funcionario...
		Funcionario funcionario = this.funcDAO.consultar(idFuncionario);
		
		// seta pra inativo
		funcionario.setAtivo(Boolean.FALSE);
		
		this.salvar(funcionario, usuario);
	}
	
	public List<String> listarNomeFuncionarios(String nomeFuncionario) {
		return this.funcDAO.listarNomeFuncionarios(nomeFuncionario);
	}

}
